From 7ffd1cfc5a6a34f45ba657e40d3cc3b299c14aa3 Mon Sep 17 00:00:00 2001 From: torkleyy Date: Fri, 12 May 2017 14:16:48 +0200 Subject: [PATCH] Move package flag handling into cargo_compile --- src/bin/build.rs | 10 +++------- src/cargo/ops/cargo_compile.rs | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/bin/build.rs b/src/bin/build.rs index 650e256da..759c27466 100644 --- a/src/bin/build.rs +++ b/src/bin/build.rs @@ -93,13 +93,9 @@ pub fn execute(options: Options, config: &Config) -> CliResult { let root = find_root_manifest_for_wd(options.flag_manifest_path, config.cwd())?; - let spec = match (options.flag_all, &options.flag_exclude) { - (true, exclude) if exclude.is_empty() => Packages::All, - (true, exclude) => Packages::OptOut(exclude), - (false, exclude) if !exclude.is_empty() => panic!("--exclude can only be used together \ - with --all"), - _ => Packages::Packages(&options.flag_package), - }; + let spec = Packages::from_flags(options.flag_all, + &options.flag_exclude, + &options.flag_package)?; let opts = CompileOptions { config: config, diff --git a/src/cargo/ops/cargo_compile.rs b/src/cargo/ops/cargo_compile.rs index 59e9fbcb7..81e757c02 100644 --- a/src/cargo/ops/cargo_compile.rs +++ b/src/cargo/ops/cargo_compile.rs @@ -110,6 +110,20 @@ pub enum Packages<'a> { } impl<'a> Packages<'a> { + pub fn from_flags(all: bool, exclude: &'a Vec, package: &'a Vec) + -> CargoResult + { + let packages = match (all, &exclude) { + (true, exclude) if exclude.is_empty() => Packages::All, + (true, exclude) => Packages::OptOut(exclude), + (false, exclude) if !exclude.is_empty() => bail!("--exclude can only be used together \ + with --all"), + _ => Packages::Packages(package), + }; + + Ok(packages) + } + pub fn into_package_id_specs(self, ws: &Workspace) -> CargoResult> { let specs = match self { Packages::All => { -- 2.30.2